package org.quincy.mqtt.test.parser;

import java.nio.ByteBuffer;

import org.quincy.mqtt.test.comm.TerminalChannel;

/**
 * <b>报文正文拦截器。</b>
 * <p><b>详细说明：</b></p>
 * <!-- 在此添加详细说明 -->
 * 无。
 * <p><b>修改列表：</b></p>
 * <table width="100%" cellSpacing=1 cellPadding=3 border=1>
 * <tr bgcolor="#CCCCFF"><td>序号</td><td>作者</td><td>修改日期</td><td>修改内容</td></tr>
 * <!-- 在此添加修改列表，参考第一行内容 -->
 * <tr><td>1</td><td>wks</td><td>2019年10月24日 上午10:57:38</td><td>建立类型</td></tr>
 * 
 * </table>
 * @version 1.0
 * @author wks
 * @since 1.0
 */
public interface ContentInterceptor {
	/**
	 * <b>interceptPack。</b>
	 * <p><b>详细说明：</b></p>
	 * <!-- 在此添加详细说明 -->
	 * 无。
	 * @param channel 通道
	 * @param encrypt 是否需要加密
	 * @param funcCode 功能码
	 * @param content 报文正文
	 * @return 新的报文正文
	 */
	public ByteBuffer interceptPack(TerminalChannel channel, boolean encrypt, int funcCode, ByteBuffer content);

	/**
	 * <b>interceptUnpack。</b>
	 * <p><b>详细说明：</b></p>
	 * <!-- 在此添加详细说明 -->
	 * 无。
	 * @param channel 通道
	 * @param encrypt 是否是加密报文
	 * @param funcCode 功能码
	 * @param content 报文正文
	 * @return 新的报文正文
	 */
	public ByteBuffer interceptUnpack(TerminalChannel channel, boolean encrypt, int funcCode, ByteBuffer content);

	/**
	 * <b>是否需要加密报文正文。</b>
	 * <p><b>详细说明：</b></p>
	 * <!-- 在此添加详细说明 -->
	 * 无。
	 * @param channel 通道
	 * @param funcCode 功能码
	 * @return 是否需要加密报文正文
	 */
	public boolean isEncrypt(TerminalChannel channel, int funcCode);
}
